
package com.leaves.core.exception.enums;

import com.leaves.core.annotion.ExpEnumType;
import com.leaves.core.consts.ExpEnumConstant;
import com.leaves.core.exception.enums.abs.AbstractBaseExceptionEnum;
import com.leaves.core.factory.ExpEnumCodeFactory;

/**
 * 认证相关的异常的枚举
 * <p>
 * 认证和鉴权的区别：
 * <p>
 * 认证可以证明你能登录系统，认证的过程是校验token的过程
 * 鉴权可以证明你有系统的哪些权限，鉴权的过程是校验角色是否包含某些接口的权限
 *
 * @author yubaoshan
 * @date 2019/7/18 22:22
 */
@ExpEnumType(module = ExpEnumConstant.SNOWY_CORE_MODULE_EXP_CODE, kind = ExpEnumConstant.AUTH_EXCEPTION_ENUM)
public enum RegisterExceptionEnum implements AbstractBaseExceptionEnum {


    /**
     * 验证码错误
     */
    CONSTANT_EMPTY_ERROR(1, "验证码错误"),
    /**
     * 通过第三方验证失败
     */
    THARDPART_VALIDATION_FAILED(2,"验证码验证失败"),
    /**
     * 学校验证失败
     */
    ORG_NOT_EXIST(3,"学校名称验证失败"),
    /**
     * 账号已存在
     */
    EMAIL_ACCOUNT_REPEAT(4, "账号已注册，请勿重复注册"),
    /**
     * 账号不存在
     */
    USER_NOT_EXIST(5,"账号不存在"),
    /**
     * 账户的邮箱与提供邮箱不一致
     */
    USER_EMAIL_NOT_EQUAL(6,"该邮箱与系统预留邮箱不一致");

    private final Integer code;

    private final String message;

    RegisterExceptionEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    @Override
    public Integer getCode() {
        return ExpEnumCodeFactory.getExpEnumCode(this.getClass(), code);
    }

    @Override
    public String getMessage() {
        return message;
    }

}
